Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>Java Business Integration</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/Java_Business_Integration"> <link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Java_Business_Integration rootpage-Java_Business_Integration skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Java Business Integration</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr">

<p><i><b>Java Business Integration</b></i> (<i><b>JBI</b></i>) est une norme édictée dans la <a href="Java_Specification_Requests" title="Java Specification Requests">JSR</a> <a rel="nofollow" class="external text" href="http://www.jcp.org/en/jsr/detail?id=208">208</a> dans le cadre du <a href="Java_Community_Process" title="Java Community Process">Java Community Process</a>. JBI est basé sur une approche <a href="Architecture_orient%C3%A9e_services" title="Architecture orientée services">SOA</a>.
</p><p>Le problème initial est l'intégration de données en provenance de sources différentes au sein d'un <a href="Syst%C3%A8me_d'information" title="Système d'information">système d'information</a> composé d'applications disparates. JBI définit une architecture qui permet la mise en place de solutions d'intégration basées sur l'utilisation de composants qui communiquent via des messages. Les <a href="Enterprise_Service_Bus" class="mw-redirect" title="Enterprise Service Bus">Enterprise Service Bus</a> sont une implémentation de cette norme.
</p><p>JBI est une spécification normalisant ces intégrations via un jeu d'API permettant à tout fournisseur les respectant de pouvoir se connecter à un conteneur JBI pour échanger des messages avec le reste du <a href="Syst%C3%A8me_d'information" title="Système d'information">S.I.</a>.
</p>

<div class="mw-heading mw-heading2"><h2 id="Architecture">Architecture</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Concepts">Concepts</h3></div>
<p>JBI est une approche orientée composant qui permet de router les messages de composants en composants et reposant sur des concepts suivants.
</p>
<div class="mw-heading mw-heading4"><h4 id="Component">Component</h4></div>
<p>Les composants proposent des services accessibles par l'intermédiaire d'interfaces.
</p><p>Ce sont les parties enfichables dans le <a href="Framework" title="Framework">framework</a> JBI. Ils se divisent en deux sous-familles&nbsp;:
</p>
<div class="mw-heading mw-heading5"><h5 id="Service_Engine_(SE)"><span id="Service_Engine_.28SE.29"></span>Service Engine (SE)</h5></div>
<p>Les SE fournissent la logique métier et les transformations (<a href="XSLT" class="mw-redirect" title="XSLT">XSLT</a>, <a rel="nofollow" class="external text" href="http://labs.jboss.com/file-access/default/members/jbossrules/freezone/docs/3.0.5/html_single/index.html">Drools</a>...). Ils peuvent consommer eux-mêmes d'autres SE.
</p>
<div class="mw-heading mw-heading5"><h5 id="Binding_Component_(BC)"><span id="Binding_Component_.28BC.29"></span>Binding Component (BC)</h5></div>
<p>Les BC fournissent la connectivité, qu'il s'agisse de protocoles (<a href="File_Transfer_Protocol" title="File Transfer Protocol">FTP</a>, <a href="HTTP" class="mw-redirect" title="HTTP">HTTP</a>, ...), de piles (<a href="SOAP" title="SOAP">SOAP</a>, <a href="Java_Message_Service" title="Java Message Service">JMS</a>, ...) ou de services externes au conteneur JBI. Ils permettent l'accès depuis l'extérieur aux services d'une application JBI.
</p>
<div class="mw-heading mw-heading5"><h5 id="Rôles"><span id="R.C3.B4les"></span>Rôles</h5></div>
<p>Les composants peuvent avoir les rôles suivants&nbsp;:
</p>
<ul><li><b>Consumer</b>&nbsp;: Le composant utilise un service</li>
<li><b>Provider</b>&nbsp;: Le composant fournit un service</li></ul>
<p>Chaque composant peut être à la fois consumer et provider.
</p>
<div class="mw-heading mw-heading4"><h4 id="EndPoint">EndPoint</h4></div>
<p>Les services proposés par les composants sont accessibles via des endpoints. Un service correspond à un endpoint.
Les composants qui consomment des services peuvent spécifier un endpoint de 2 manières&nbsp;:
</p>
<ul><li><b>Implicitement</b>&nbsp;: Le endpoint est sélectionné en se basant sur le type de service fourni par les composants et celui recherché. C'est une méthode «&nbsp;dynamique&nbsp;» qui permet de trouver un composant fournissant le service recherché s'il en existe au moins un disponible.</li>
<li><b>Explicitement</b>&nbsp;: Le endpoint est sélectionné par son nom. Cette méthode fait donc apparaître le endpoint par son nom dans le code. Si ce endpoint est indisponible mais qu'un autre composant propose le même service, il ne pourra pas être utilisé alors que ce serait le cas avec une spécification implicite.</li></ul>
<div class="mw-heading mw-heading4"><h4 id="Normalized_Message_Router_(NMR)"><span id="Normalized_Message_Router_.28NMR.29"></span>Normalized Message Router (NMR)</h4></div>
<p>Le Normalized Message Router reçoit et envoie des messages de la part de composants. Il est responsable du routage des messages. Les messages sont tous dans un format normalisé.
</p>
<div class="mw-heading mw-heading4"><h4 id="Message_Exchange_Pattern_(MEP)"><span id="Message_Exchange_Pattern_.28MEP.29"></span>Message Exchange Pattern (MEP)</h4></div>
<p>Il existe quatre MEPs différents, la différence étant basée sur les types d'invocations One-way et Request-Response. Ils permettent de moduler les types de communications.
</p>
<ul><li><b>In-Only</b> (One-Way)&nbsp;: Le message est envoyé au destinataire. Aucun moyen n'est mis en œuvre pour s'assurer qu'il est bien arrivé ou non.</li>
<li><b>Robust In-Only</b> (One-Way)&nbsp;: Le message est envoyé au destinataire et un message est retransmis à l'expéditeur en cas d'erreur.</li>
<li><b>In-Out</b> (Request-Response)&nbsp;: Un message nécessitant une réponse est envoyé au destinataire.</li>
<li><b>In Optional-Out</b> (Request-Response) :Un message est envoyé au destinataire et peut parfois nécessiter une réponse.</li></ul>
<div class="mw-heading mw-heading4"><h4 id="Normalized_Message">Normalized Message</h4></div>
<p>Les Normalized Messages sont les messages échangés par une application JBI. Ce sont des documents <a href="Extensible_Markup_Language" title="Extensible Markup Language">XML</a> formés&nbsp;:
</p>
<ul><li><b>Du contexte du message</b>&nbsp;: Il inclut des informations tels que le <a href="Protocole_de_communication" title="Protocole de communication">protocole de communication</a>, des informations spécifiques à d'autres composants ...</li>
<li><b>Du contenu du message</b>&nbsp;: Toutes les données.</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Delivery_Channel">Delivery Channel</h3></div>
<p>Les composants se «&nbsp;connectent&nbsp;» sur le NMR grâce au delivery channel. C'est une voie de communication bidirectionnelle leur permettant d'envoyer et de recevoir les messages.
</p>
<div class="mw-heading mw-heading3"><h3 id="Packaging">Packaging</h3></div>
<p>JBI défini un <a href="Packaging" title="Packaging">packaging</a> standard (une archive Zip) et des descripteurs (fichier jbi.xml) pour l'installation et le déploiement des composants afin de permettre leur portabilité sur tous les <a href="Enterprise_Service_Bus" class="mw-redirect" title="Enterprise Service Bus">ESB</a> conforme à sa spécification, sans modification.
Le package d'installation contient tout ce qui est nécessaire à l'installation d'un composant (librairies ...) et obligatoirement un descripteur d'installation qui se trouve dans un dossier META-INF à la racine de l'archive.
Le packaging de déploiement des services est divisé en 2 parties&nbsp;:
</p>
<div class="mw-heading mw-heading4"><h4 id="Service_Unit_(SU)"><span id="Service_Unit_.28SU.29"></span>Service Unit (SU)</h4></div>
<p>Chaque service à déployer est défini dans un SU. Celui-ci contient toutes les informations relatives au service (fiche de transformation Xslt... ) et obligatoirement un descripteur qui se trouve dans un dossier META-INF à la racine de l'archive.
</p>
<div class="mw-heading mw-heading4"><h4 id="Service_Assembly_(SA)"><span id="Service_Assembly_.28SA.29"></span>Service Assembly (SA)</h4></div>
<p>Les services qui doivent interagir ensemble sont rassemblés dans un SA. Celui-ci contient obligatoirement un descripteur où se trouvent toutes les informations relatives aux SUs à déployer, ainsi que les archives de ces Sus.
</p>
<div class="mw-heading mw-heading2"><h2 id="Implémentation"><span id="Impl.C3.A9mentation"></span>Implémentation</h2></div>
<p>Les <a href="Enterprise_Service_Bus" class="mw-redirect" title="Enterprise Service Bus">ESBs</a> fournissent une implémentation de la norme JBI plus ou moins stricte. Les composants utilisables sont fournis avec l'ESB, chacun ayant ses propres composants. Les packages sont pour la plupart le plus possible conformes au standard mais tous sont compatibles avec la norme JBI.
</p>
<div class="mw-heading mw-heading3"><h3 id="Produits">Produits</h3></div>
<p>Il existe un grand nombre d'ESB compatibles JBI, <a href="Logiciels_libres" class="mw-redirect" title="Logiciels libres">libres</a> ou <a href="Logiciel_propri%C3%A9taire" title="Logiciel propriétaire">propriétaires</a>
</p><p>ESB certifiés JBI&nbsp;:
</p>
<ul><li><a href="Petals_ESB" title="Petals ESB">Petals ESB</a>, <a href="OW2" title="OW2">OW2</a> &amp; <a rel="nofollow" class="external text" href="http://www.petalslink.com">Petals Link</a></li>
<li><a href="https://en.wikipedia.org/wiki/Open_ESB" class="extiw external" title="en:Open ESB">Open ESB</a>, <a href="Oracle_(entreprise)" title="Oracle (entreprise)">Oracle</a></li></ul>
<p>ESB compatibles JBI&nbsp;:
</p>
<ul><li><a href="Apache_ServiceMix" title="Apache ServiceMix">Servicemix</a>, fondation <a href="Apache_Software_Foundation" title="Apache Software Foundation">Apache</a></li>
<li>Sonic ESB, <a href="Progress_Software" title="Progress Software">Progress Software</a></li>
<li><a href="https://en.wikipedia.org/wiki/Mule_(software)" class="extiw external" title="en:Mule (software)">Mule ESB</a>, <a href="https://en.wikipedia.org/wiki/Mulesoft" class="extiw external" title="en:Mulesoft">Mulesoft</a></li>
<li><a href="Talend" title="Talend">Talend</a> ESB</li>
<li>...</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Lexique">Lexique</h2></div>
<ul><li>Component: composant</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Liens_internes">Liens internes</h2></div>
<ul><li><a href="Web_Services_Description_Language" title="Web Services Description Language">WSDL</a></li>
<li><a href="JMX" title="JMX">JMX</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Liens_externes">Liens externes</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://www.jcp.org/en/jsr/detail?id=208">JSR 208</a>.</li>
<li><a rel="nofollow" class="external text" href="http://enterpriseservicebus.blogspot.com/2005/11/prsentation-de-la-jsr-208-intitule.html">Présentation de la JSR-208 en français sur 'www.enterpriseservicebus.be'</a>.</li>
<li><a rel="nofollow" class="external text" href="http://java.sun.com/developer/technicalArticles/WebServices/soa3/ImplementingSOA.pdf">Article sur l'implémentation de SOA avec Java EE 5 SDK</a>.</li></ul>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de l’informatique</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2025-01-31" href="https://fr.wikipedia.org/wiki/?title=Java_Business_Integration&amp;oldid=222579476">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>

</body></html>